/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP

#import "MCClusterObjects.h"

#import "../MCAttribute_Internal.h"
#import "../MCCluster_Internal.h"
#import "../MCCommand_Internal.h"

#include "core/Attribute.h"
#include "core/Command.h"
#include <app-common/zap-generated/cluster-objects.h>

#import <Foundation/Foundation.h>

// OnOff cluster:

@implementation MCOnOffCluster

// OnOff cluster commands:

- (id)offCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::OnOff::Commands::Off::Id);
    return cppCommand != nil ? [[MCOnOffClusterOffCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)onCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::OnOff::Commands::On::Id);
    return cppCommand != nil ? [[MCOnOffClusterOnCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)toggleCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::OnOff::Commands::Toggle::Id);
    return cppCommand != nil ? [[MCOnOffClusterToggleCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)offWithEffectCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::OnOff::Commands::OffWithEffect::Id);
    return cppCommand != nil ? [[MCOnOffClusterOffWithEffectCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)onWithRecallGlobalSceneCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::OnOff::Commands::OnWithRecallGlobalScene::Id);
    return cppCommand != nil ? [[MCOnOffClusterOnWithRecallGlobalSceneCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)onWithTimedOffCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Id);
    return cppCommand != nil ? [[MCOnOffClusterOnWithTimedOffCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// OnOff cluster attributes:

- (id)onOffAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::OnOff::Id);
    return cppAttribute != nil ? [[MCOnOffClusterOnOffAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)globalSceneControlAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::GlobalSceneControl::Id);
    return cppAttribute != nil ? [[MCOnOffClusterGlobalSceneControlAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)onTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::OnTime::Id);
    return cppAttribute != nil ? [[MCOnOffClusterOnTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)offWaitTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::OffWaitTime::Id);
    return cppAttribute != nil ? [[MCOnOffClusterOffWaitTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)startUpOnOffAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::StartUpOnOff::Id);
    return cppAttribute != nil ? [[MCOnOffClusterStartUpOnOffAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCOnOffClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCOnOffClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCOnOffClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCOnOffClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::OnOff::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCOnOffClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// LevelControl cluster:

@implementation MCLevelControlCluster

// LevelControl cluster commands:

- (id)moveToLevelCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::MoveToLevel::Id);
    return cppCommand != nil ? [[MCLevelControlClusterMoveToLevelCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)moveCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::Move::Id);
    return cppCommand != nil ? [[MCLevelControlClusterMoveCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)stepCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::Step::Id);
    return cppCommand != nil ? [[MCLevelControlClusterStepCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)stopCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::Stop::Id);
    return cppCommand != nil ? [[MCLevelControlClusterStopCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)moveToLevelWithOnOffCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Id);
    return cppCommand != nil ? [[MCLevelControlClusterMoveToLevelWithOnOffCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)moveWithOnOffCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::MoveWithOnOff::Id);
    return cppCommand != nil ? [[MCLevelControlClusterMoveWithOnOffCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)stepWithOnOffCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::StepWithOnOff::Id);
    return cppCommand != nil ? [[MCLevelControlClusterStepWithOnOffCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)stopWithOnOffCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::StopWithOnOff::Id);
    return cppCommand != nil ? [[MCLevelControlClusterStopWithOnOffCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)moveToClosestFrequencyCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::LevelControl::Commands::MoveToClosestFrequency::Id);
    return cppCommand != nil ? [[MCLevelControlClusterMoveToClosestFrequencyCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// LevelControl cluster attributes:

- (id)currentLevelAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::CurrentLevel::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterCurrentLevelAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)remainingTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::RemainingTime::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterRemainingTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)minLevelAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::MinLevel::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterMinLevelAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)maxLevelAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::MaxLevel::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterMaxLevelAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)currentFrequencyAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::CurrentFrequency::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterCurrentFrequencyAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)minFrequencyAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::MinFrequency::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterMinFrequencyAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)maxFrequencyAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::MaxFrequency::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterMaxFrequencyAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)optionsAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::Options::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterOptionsAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)onOffTransitionTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::OnOffTransitionTime::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterOnOffTransitionTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)onLevelAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::OnLevel::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterOnLevelAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)onTransitionTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::OnTransitionTime::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterOnTransitionTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)offTransitionTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::OffTransitionTime::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterOffTransitionTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)defaultMoveRateAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::DefaultMoveRate::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterDefaultMoveRateAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)startUpCurrentLevelAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::StartUpCurrentLevel::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterStartUpCurrentLevelAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::LevelControl::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCLevelControlClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// WakeOnLan cluster:

@implementation MCWakeOnLanCluster

// WakeOnLan cluster commands:

// WakeOnLan cluster attributes:

- (id)macAddressAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::MACAddress::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterMACAddressAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)linkLocalAddressAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::LinkLocalAddress::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterLinkLocalAddressAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::WakeOnLan::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCWakeOnLanClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// TargetNavigator cluster:

@implementation MCTargetNavigatorCluster

// TargetNavigator cluster commands:

- (id)navigateTargetCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::TargetNavigator::Commands::NavigateTarget::Id);
    return cppCommand != nil ? [[MCTargetNavigatorClusterNavigateTargetCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// TargetNavigator cluster attributes:

- (id)targetListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::TargetList::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterTargetListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)currentTargetAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::CurrentTarget::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterCurrentTargetAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::TargetNavigator::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCTargetNavigatorClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// MediaPlayback cluster:

@implementation MCMediaPlaybackCluster

// MediaPlayback cluster commands:

- (id)playCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Play::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterPlayCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)pauseCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Pause::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterPauseCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)stopCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Stop::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterStopCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)startOverCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::StartOver::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterStartOverCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)previousCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Previous::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterPreviousCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)nextCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Next::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterNextCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)rewindCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Rewind::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterRewindCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)fastForwardCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::FastForward::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterFastForwardCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)skipForwardCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::SkipForward::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterSkipForwardCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)skipBackwardCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::SkipBackward::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterSkipBackwardCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)seekCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::Seek::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterSeekCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)activateAudioTrackCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::ActivateAudioTrack::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterActivateAudioTrackCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)activateTextTrackCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::ActivateTextTrack::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterActivateTextTrackCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)deactivateTextTrackCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::MediaPlayback::Commands::DeactivateTextTrack::Id);
    return cppCommand != nil ? [[MCMediaPlaybackClusterDeactivateTextTrackCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// MediaPlayback cluster attributes:

- (id)currentStateAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::CurrentState::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterCurrentStateAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)startTimeAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::StartTime::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterStartTimeAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)durationAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::Duration::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterDurationAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)sampledPositionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::SampledPosition::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterSampledPositionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)playbackSpeedAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::PlaybackSpeed::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterPlaybackSpeedAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)seekRangeEndAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::SeekRangeEnd::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterSeekRangeEndAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)seekRangeStartAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::SeekRangeStart::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterSeekRangeStartAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)activeAudioTrackAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::ActiveAudioTrack::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterActiveAudioTrackAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)availableAudioTracksAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::AvailableAudioTracks::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterAvailableAudioTracksAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)activeTextTrackAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::ActiveTextTrack::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterActiveTextTrackAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)availableTextTracksAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::AvailableTextTracks::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterAvailableTextTracksAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::MediaPlayback::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCMediaPlaybackClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// KeypadInput cluster:

@implementation MCKeypadInputCluster

// KeypadInput cluster commands:

- (id)sendKeyCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::KeypadInput::Commands::SendKey::Id);
    return cppCommand != nil ? [[MCKeypadInputClusterSendKeyCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// KeypadInput cluster attributes:

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::KeypadInput::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCKeypadInputClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::KeypadInput::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCKeypadInputClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::KeypadInput::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCKeypadInputClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::KeypadInput::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCKeypadInputClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::KeypadInput::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCKeypadInputClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// ContentLauncher cluster:

@implementation MCContentLauncherCluster

// ContentLauncher cluster commands:

- (id)launchContentCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::ContentLauncher::Commands::LaunchContent::Id);
    return cppCommand != nil ? [[MCContentLauncherClusterLaunchContentCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)launchURLCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::ContentLauncher::Commands::LaunchURL::Id);
    return cppCommand != nil ? [[MCContentLauncherClusterLaunchURLCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// ContentLauncher cluster attributes:

- (id)acceptHeaderAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::AcceptHeader::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterAcceptHeaderAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)supportedStreamingProtocolsAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::SupportedStreamingProtocols::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterSupportedStreamingProtocolsAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ContentLauncher::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCContentLauncherClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// ApplicationLauncher cluster:

@implementation MCApplicationLauncherCluster

// ApplicationLauncher cluster commands:

- (id)launchAppCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::ApplicationLauncher::Commands::LaunchApp::Id);
    return cppCommand != nil ? [[MCApplicationLauncherClusterLaunchAppCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)stopAppCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::ApplicationLauncher::Commands::StopApp::Id);
    return cppCommand != nil ? [[MCApplicationLauncherClusterStopAppCommand alloc] initWithCppCommand:cppCommand] : nil;
}

- (id)hideAppCommand
{
    void * cppCommand = self.cppCluster->GetCommand(chip::app::Clusters::ApplicationLauncher::Commands::HideApp::Id);
    return cppCommand != nil ? [[MCApplicationLauncherClusterHideAppCommand alloc] initWithCppCommand:cppCommand] : nil;
}

// ApplicationLauncher cluster attributes:

- (id)catalogListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::CatalogList::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterCatalogListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)currentAppAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::CurrentApp::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterCurrentAppAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationLauncher::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCApplicationLauncherClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end

// ApplicationBasic cluster:

@implementation MCApplicationBasicCluster

// ApplicationBasic cluster commands:

// ApplicationBasic cluster attributes:

- (id)vendorNameAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::VendorName::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterVendorNameAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)vendorIDAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::VendorID::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterVendorIDAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)applicationNameAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::ApplicationName::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterApplicationNameAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)productIDAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::ProductID::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterProductIDAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)applicationAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::Application::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterApplicationAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)statusAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::Status::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterStatusAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)applicationVersionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::ApplicationVersion::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterApplicationVersionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)allowedVendorListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::AllowedVendorList::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterAllowedVendorListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)generatedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::GeneratedCommandList::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterGeneratedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)acceptedCommandListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::AcceptedCommandList::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterAcceptedCommandListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)attributeListAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::AttributeList::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterAttributeListAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)featureMapAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::FeatureMap::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterFeatureMapAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}

- (id)clusterRevisionAttribute
{
    void * cppAttribute = self.cppCluster->GetAttribute(chip::app::Clusters::ApplicationBasic::Attributes::ClusterRevision::Id);
    return cppAttribute != nil ? [[MCApplicationBasicClusterClusterRevisionAttribute alloc] initWithCppAttribute:cppAttribute] : nil;
}
@end
